import telebot
from telebot import types
import re
import sys
import time

sys.path.append('./modules/')
from dates_2024 import calendar, month_name
from create_calendar import CreatePicture
from set_dots import SetDot
from date_month import find_week_and_day

API_TOKEN = '7263538943:AAGam4gQylREyzMd3GZEMdCVwUNaW0PHumM'

bot = telebot.TeleBot(API_TOKEN)
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.add(btn1, btn2)
    bot.send_message(message.from_user.id, "Для картинки с датой указать месяц в формате: 09\nГде '09' - число месяца \nДля установки даты указать дату в формате: 09.03 \nГде '09.03' - месяц и дата", reply_markup=markup)

# Регулярные выражения для определения форматов
month_pattern = r'^(0[1-9]|1[0-2])$'                           # Формат 09
date_pattern  = r'^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])$' # Формат 09.03

@bot.message_handler(func=lambda message: True)
def check_date_format(message):
    text = message.text.strip()
    
    # Создать календарь на месяц
    if re.match(month_pattern, text):
        bot.reply_to(message, f"Вы ввели месяц в формате: {text}")
        CreatePicture(month_name[int(text)-1], calendar[int(text)-1])
        with open("./photos/month.png", 'rb') as photo:
            bot.send_photo(message.from_user.id, photo)

    # На календаре поставить точку
    elif re.match(date_pattern, text):
        bot.reply_to(message, f"Вы ввели дату в формате: {text}")

        days  = re.match(date_pattern, text).group(2)
        month = re.match(date_pattern, text).group(1)

        result = find_week_and_day(calendar[int(month)-1], int(days))
        if result:
            week, day = result
            print(f"Число {days} находится на неделе {week} и дне {day}.")
            SetDot(week, day)
            with open("./photos/dots.png", 'rb') as photo:
                bot.send_photo(message.from_user.id, photo)
        else:
            print(f"Число {days} не найдено в календаре.")

    else:
        bot.reply_to(message, "Формат не распознан. Пожалуйста, введите месяц в формате 09 или дату в формате 09.03.")

bot.infinity_polling()
